import service from '../utils/axios'
import type { ApiResponse } from '../utils/axios'

// 用户数据接口（与后端实体对应）
export interface UserInfo {
  id: number
  username: string
  password?: string
  realName: string
  roleType: string
  sex?: string
  email: string
  phonenumber?: string
  avatar?: string
  loginIp?: string
  loginDate?: string
  status?: string
  delFlag?: string
  collegeId?: number
  classId?: number
  createBy?: string
  createTime?: string
  updateBy?: string
  updateTime?: string
}

// 分页查询参数接口（与后端UserQueryRequest对应）
interface UserQueryParams {
  username?: string
  roleType?: string
  page?: number
  size?: number
}

// 分页查询响应接口（与后端PageResult对应）
interface PageResult<T> {
  data: T[]
  total: number
  page: number
  size: number
}

// 创建/更新用户请求接口
interface UserRequest {
  username: string
  password?: string
  realName: string
  roleType: string
  sex?: string
  email: string
  phonenumber?: string
  collegeId?: number
  classId?: number
}

/**
 * 获取用户列表（分页）
 */
export function getUserList(data: UserQueryParams): Promise<ApiResponse<PageResult<UserInfo>>> {
  return service({
    url: '/api/users/query',
    method: 'post',
    data
  })
}

/**
 * 获取用户详情
 */
export function getUserById(id: number): Promise<ApiResponse<UserInfo>> {
  return service({
    url: `/api/users/${id}`,
    method: 'get'
  })
}

/**
 * 创建用户
 */
export function createUser(data: UserRequest): Promise<ApiResponse<{ id: number }>> {
  return service({
    url: '/api/users',
    method: 'post',
    data
  })
}

/**
 * 更新用户
 */
export function updateUser(id: number, data: UserRequest): Promise<ApiResponse<void>> {
  return service({
    url: `/api/users/${id}`,
    method: 'put',
    data
  })
}

/**
 * 删除用户
 */
export function deleteUser(id: number): Promise<ApiResponse<void>> {
  return service({
    url: `/api/users/${id}`,
    method: 'delete'
  })
}

